package com.ww.nio.filechannel;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

/**
 * 1、MappedByteBuffer可以让文件在内存（堆外内存）修改，操作系统不需要拷贝一次
 * @author wanggw
 * 2023年10月17日 下午9:52:29
 */
public class MappedByteBuffer01 {
	public static void main(String[] args) throws IOException {
		RandomAccessFile randomAccessFile = new RandomAccessFile("", "rw");
		FileChannel fileChannel = randomAccessFile.getChannel();
		/**
		 * 参数1：模式
		 * 参数2：起始位置
		 * 参数3：映射到内存的大小，即将文件多少个字节映射到内存
		 * 可以直接修改的范围就是0-5
		 */
		MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, 5);
		mappedByteBuffer.put(0, (byte) 'H');
		mappedByteBuffer.put(3, (byte) '9');
		
		randomAccessFile.close();
	}
}
